

#ifndef UC_GEEXTC2D_H
#define UC_GEEXTC2D_H

#include "zgecurv2d.h"
#include "zgearc2d.h"
#include "zgevec2d.h"
#include "zgepnt2d.h"
#pragma pack (push, 8)

class UcGeNurbCurve2d;
class UcGeExternalCurve2d;
class UcGeExternalCurve2d;

class
GX_DLLEXPIMPORT
UcGeExternalCurve2d : public UcGeCurve2d
{
public:
    UcGeExternalCurve2d();
    UcGeExternalCurve2d(const UcGeExternalCurve2d&);
    UcGeExternalCurve2d(void* curveDef, UcGe::ExternalEntityKind curveKind,
                        ZSoft::Boolean makeCopy = ZSoft::kTrue);

    ZSoft::Boolean isNurbCurve() const;
    ZSoft::Boolean isNurbCurve(UcGeNurbCurve2d& nurbCurve) const;
    ZSoft::Boolean isDefined  () const;

    void           getExternalCurve(void*& curveDef) const;

    UcGe::ExternalEntityKind externalCurveKind() const;

    UcGeExternalCurve2d& set(void* curveDef, UcGe::ExternalEntityKind curveKind,
                             ZSoft::Boolean makeCopy = ZSoft::kTrue);

    UcGeExternalCurve2d& operator = (const UcGeExternalCurve2d& src);

    ZSoft::Boolean       isOwnerOfCurve() const;
    UcGeExternalCurve2d& setToOwnCurve();
};

#pragma pack (pop)
#endif
